package kr.pe.johnkim.chattingday.mobile.rest.service;

import kr.pe.johnkim.chattingday.mobile.domain.ChattingDayGathering;

import java.util.List;

/**
 * Chatting Day Service 관련 메소드들을 정의한 인터페이스 이다.
 * 
 * @author : johnkim <cale9797@gmail.com / Bettersoft Inc,.>
 * @Date : 12. 6. 5
 */
public interface ChattingDayGatheringService {

    /**
     * 채팅방을 개설 한다.
     *
     * @param chattingDayGathering
     * @return
     */
    public boolean registerGathering(ChattingDayGathering chattingDayGathering);

    /**
     * 채팅방 정보를 가져 온다.
     *
     * @param chattingDayGathering
     * @return
     */
    public ChattingDayGathering selectGatheringInformation(ChattingDayGathering chattingDayGathering);

    /**
     * 검색한 채팅방 목록을 가져 온다.
     *
     * @param chattingDayGathering
     * @return
     */
    public List<ChattingDayGathering> selectSearchGatheringList(ChattingDayGathering chattingDayGathering);

    /**
     * 채팅방 정보를 수정 한다.
     *
     * @param chattingDayGathering
     * @return
     */
    public boolean updateGatheringInformation(ChattingDayGathering chattingDayGathering);

    /**
     * 채팅방을 비활성화 한다.(개설자만 가능하다.)
     *
     * 1. 개설자가 채팅방에서 나갈 경우.
     * 2. 개설자가 인위적으로 비활성화 할 경우.
     *
     * 참여자와 메시지도 모두 비활성화 한다.
     *
     * @param chattingDayGathering
     * @return
     */
    public boolean updateDeactivateGathering(ChattingDayGathering chattingDayGathering);

    /**
     * 개설된 채팅방의 총 갯수를 가져 온다.
     *
     * @param chattingDayGathering
     * @return
     */
    public ChattingDayGathering selectGatheringCount(ChattingDayGathering chattingDayGathering);
}
